package com.rx.core.handler;

import com.rx.core.base.RxBaseConstant;
import com.rx.core.enm.HANDLER_CATEGORY;
import com.rx.core.enm.HANDLER_TYPE;
import org.springframework.context.annotation.Lazy;
import org.springframework.context.annotation.Scope;
import org.springframework.stereotype.Component;

import java.lang.annotation.*;

/**
 * 所有版权归 广西梧州 陈锦韬 所有
 *
 * @version V1.0
 * @Title: RxHandler
 * @Package com.rx.core.handler
 * @Description: 自定义处理器
 * @author: 陈锦韬
 * @date: 2021\6\11 0011
 * @Copyright: 2021 陈锦韬  All rights reserved.
 */
@Target({ElementType.TYPE,ElementType.METHOD})
@Retention(RetentionPolicy.RUNTIME)
@Documented
//@Import(RxDataRegister.class)
@Component
@Lazy
@Scope(value = "prototype")
public @interface RxHandler {
    String value() default "";

    /**
     * 配置说明：
     * 1.当types存在ALL。则表示当前处理器适用于全局。extypes与keys失效。exkeys 可以排除url请求
     * 2.当types存在EXT。则表示当前处理器适用于全局的排他适用。extypes与exkeys失效。
     *
     */
    // 包含的处理类型 如单表详情、单表列表，等
    HANDLER_TYPE[] types() default {HANDLER_TYPE.NONE};
    // 排除的处理类型。
    HANDLER_TYPE[] extypes() default {};
    // 包含的url 请求
    String[] keys() default {RxBaseConstant.DEFAULT_URL_KEY};
    // 排除的url 请求
    String[] exkeys() default {};
    // 排序
    int order() default 0;
    // 前-prev 覆盖-over 后-after
    HANDLER_CATEGORY category() default HANDLER_CATEGORY.PREV;
}
